class_name OverspendSystemDemo
extends Node

# 过量消耗系统演示脚本
# 展示如何使用新的过量消耗机制

func _ready():
	print("🎮 === 过量消耗系统演示 ===")
	demo_overspend_system()

func demo_overspend_system():
	print("\n📚 演示场景：玩家当前有2点能量，想要使用需要4点能量的强力卡牌")
	
	# 模拟玩家状态
	var player_stats = CharacterStats.new()
	player_stats.max_mana = 3
	player_stats.mana = 2
	
	print("⚡ 玩家当前状态：")
	print("  - 最大能量: %d" % player_stats.max_mana)
	print("  - 当前能量: %d" % player_stats.mana)
	
	# 获取计数器
	var counter = player_stats.stats_tracker.get_turn_counter()
	
	print("\n🃏 尝试使用枯木护盾（需要1点正常能量 + 1点过量消耗）")
	
	# 1. 先消耗正常的1点能量（卡牌基础费用）
	var normal_cost_success = player_stats.spend_mana(1, false)
	print("💰 消耗正常能量 1 点: %s" % ("成功" if normal_cost_success else "失败"))
	print("  - 剩余能量: %d" % player_stats.mana)
	
	# 2. 然后使用枯木护盾效果（过量消耗1点）
	var withered_wood_effect = WitheredWoodWardEffect.new()
	withered_wood_effect.overspend_amount = 1
	
	# 模拟玩家数组
	var mock_player = Node.new()
	mock_player.set_script(preload("res://scenes/player/player.gd"))
	mock_player.stats = player_stats
	mock_player.modifier_handler = ModifierHandler.new()
	
	# 执行枯木护盾效果
	withered_wood_effect.execute([mock_player])
	
	print("\n📊 当前计数器状态：")
	var mana_spent = counter.get_counter(TurnCounter.CounterType.MANA_SPENT)
	var mana_overspent = counter.get_counter(TurnCounter.CounterType.MANA_OVERSPENT)
	print("  - 正常消耗能量: %d" % mana_spent)
	print("  - 过量消耗能量: %d" % mana_overspent)
	print("  - 当前剩余能量: %d" % player_stats.mana)
	
	print("\n🔄 模拟回合结束和新回合开始...")
	
	# 模拟玩家回合结束 - 检查过量消耗状态
	print("📅 玩家回合结束，检查过量消耗状态...")
	player_stats.end_turn_overspend_cleanup()
	
	# 模拟新回合开始 - 过量消耗将被处理
	print("📅 新回合开始，处理过量消耗...")
	var original_max_mana = player_stats.max_mana
	player_stats.reset_mana()  # 这会处理pending_overspent并清零
	
	print("⚡ 新回合能量状态：")
	print("  - 最大能量: %d" % player_stats.max_mana)
	print("  - 当前能量: %d" % player_stats.mana)
	print("  - 过量消耗累积: %d" % player_stats.pending_overspent)
	
	print("\n🔄 演示多次过量消耗累积...")
	
	# 模拟连续过量消耗
	print("📚 场景: 连续使用多个过量消耗效果")
	withered_wood_effect.execute([mock_player])  # 再次过量消耗1点
	withered_wood_effect.overspend_amount = 2
	withered_wood_effect.execute([mock_player])  # 过量消耗2点
	
	print("📊 累积过量消耗: %d" % player_stats.pending_overspent)
	
	print("💸 模拟下回合开始，处理累积的过量消耗...")
	player_stats.reset_mana()
	
	print("⚡ 处理后能量状态：")
	print("  - 最大能量: %d" % player_stats.max_mana)
	print("  - 当前能量: %d" % player_stats.mana)
	print("  - 过量消耗累积: %d (应该为0)" % player_stats.pending_overspent)
	
	print("\n🎯 演示基于过量消耗的效果...")
	
	# 创建基于过量消耗的效果
	var overspend_effect = CounterBasedEffect.create_overspend_based_effect(1, 5)
	overspend_effect.execute([mock_player])
	
	print("\n✅ 过量消耗系统演示完成！")
	print("\n💡 系统特点总结：")
	print("  ✓ 允许消耗超过当前能量的资源")
	print("  ✓ 过量消耗记录在专门的计数器中")
	print("  ✓ 下回合自动从最大能量中扣除过量消耗")
	print("  ✓ 可以基于过量消耗创建特殊效果")
	print("  ✓ 为策略性资源管理提供更多选择")
	
	# 清理
	mock_player.queue_free()

# 演示不同类型的过量消耗卡牌
func demo_overspend_cards():
	print("\n🃏 === 过量消耗卡牌类型演示 ===")
	
	# 1. 枯木护盾型：立即效果 + 过量消耗
	print("\n🛡️ 类型1：枯木护盾型")
	print("  - 立即获得伤害免疫")
	print("  - 过量消耗1点能量")
	print("  - 适合紧急防御")
	
	# 2. 透支攻击型：高伤害 + 过量消耗
	print("\n⚔️ 类型2：透支攻击型")
	print("  - 造成超高伤害")
	print("  - 过量消耗2-3点能量")
	print("  - 适合快速结束战斗")
	
	# 3. 投资型：现在过量消耗，后续回报
	print("\n💰 类型3：投资型")
	print("  - 过量消耗能量")
	print("  - 下回合获得额外资源")
	print("  - 适合长期战略")
	
	print("\n🎯 过量消耗为卡牌设计提供了新的平衡维度！") 